|
HW 30 - CFM-68K Ç©ÇÁ ADBOp ÇåƒÇ—èoÇ∑ï˚ñ@(1997 îN 5 åé 11ì˙) Q: CFM-68K ÉvÉçÉZÉXÇ©ÇÁ ADBOp ÇåƒÇ—èoÇ∑ÇΔÅAÉoÉXÉGÉâÅ[Ç≈ÉNÉâÉbÉVÉÖǵNjÇ∑ÅBǫǧǵÇΩÇÁDZÇÃñ‚ëËÇâåàÇ≈Ç´ÇÈÇ≈ǵÇÂǧǩÅB A: DZÇÍÇÕÅACFM-68K Çà InterfaceLib ÉtÉ@ÉCÉãì‡ÇÃÉOÉãÅ[ÉRÅ[ÉhDžNjǬÇÌÇÈä˘ímÇÃñ‚ëËÇ≈Ç∑ÅBâåàï˚ñ@ÇÕÅAé©ï™Ç≈ÉOÉãÅ[ÉRÅ[Éh (â∫ãLÇ…åfç⁄) Çópà”ǵÅA68K ÉgÉâÉbÉvÇíºê⁄åƒÇ—èoÇ∑DZÇΔÇ≈Ç∑ÅBà»â∫Ç…é¶Ç∑ÉOÉãÅ[ÉRÅ[ÉhÇëgÇ›çûÇfiÇΩÇflÇ…ÇÕÅAÇÌÇ∏Ç©Ç≈Ç∑Ç™ÅAÉvÉçÉOÉâÉÄÇ…éüÇÃÇÊǧǻïœçXÇ™ïKóvÇ≈Ç∑ÅB
PowerPC ÉRÅ[ÉhÇ©ÇÁ 68K ÉRÅ[ÉhÇåƒÇ—èoÇ∑ÉOÉãÅ[ÉRÅ[ÉhÇÃé¿ëïï˚ñ@ÇÃè⁄ç◊ÇÕÅATECHNOTE 1127Åué∏ÇÌÇÍÇΩÉäÉìÉNÇãÅÇflǃÅvÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅBDZÇÃñ‚ëËÇÕ System Software 8.1 Ç≈ämîFÇ≥ÇÍǃǢNjÇ∑ÅBÉoÉOÉåÉ|Å[Égî‘çÜÇÕ 2227159 Ç≈Ç∑ÅB Å@ #include <Types.h>#include <DeskBus.h>#include <MixedMode.h>Å@ // ADBOp Çíºê⁄åƒÇ—èoÇ∑ÇÃÇ≈ÇÕÇ»Ç≠ÅAÉ^Å[ÉQÉbÉgÉAÅ[ÉLÉeÉNÉ`ÉÉDžǵÇΩǙǢÅA // ê≥ǵǢåƒÇ—èoǵÇçsǧ MyADBOp ÇåƒÇ—èoÇ∑ÅBCFM68K ÇÃèÍçáÅA // ADBOpBlock ç\ë¢ëÃÇê›íËǵÅAè„ãLÇà ADBGlue ÉãÅ[É`ÉìÇåƒÇ—èoÇ∑ÅB // í èÌÇà 68K ÇΔ PowerPC ÇÃèÍçáÇÕÅAADBOp Çíºê⁄åƒÇ—èoÇ∑ÅB Å@ pascal OSErr MyADBOp( Ptr refCon, ADBServiceRoutineUPP compRout, Ptr buffer, short commandNum) { Å@ #if TARGET_CPU_68K && TARGET_RT_MAC_CFM Å@ ADBOpBlock adbOpBlock; adbOpBlock.dataBuffPtr = buffer; adbOpBlock.opServiceRtPtr = compRout; adbOpBlock.opDataAreaPtr = refCon; Å@ // èdóv: DZÇÃÉTÉìÉvÉãÇ≈ÇÕÅAadbOpBlock ç\ë¢ëÃÇÉXÉ^ÉbÉNïœêîÇΔǵǃ // êÈåæÇµÇƒÇ¢ÇÈÅBí èÌÅAîÒìØä˙åƒÇ—èoǵÇ≈ÉXÉ^ÉbÉNÉpÉâÉÅÅ[É^ÇégǧÇÃÇÕ // ÇÊÇ≠ǻǢDZÇΔÇæÇ™ÅADZDZÇ≈ÇÕÅAADBOp Ç™ç\ë¢ëÃÇÃì‡óeÇÉRÉsÅ[Ç∑ÇÈÇÃÇ≈ÅA // îÒìØä˙åƒÇ—èoǵÇÃä‘Ç∏Ç¡ÇΔç\ë¢ëÃÇë∂ë±Ç≥ÇπÇÈïKóvÇÕǻǢÅB Å@ // íçà”: äÆëSÇä˙Ç∑ÇΩÇflÅArefCon ílÇ ADBOpBlock ç\ë¢ëÃÇ…ê›íËǵǃǢÇÈÅB // DZÇÃÉvÉçÉOÉâÉÄÇÕÅAäÆóπÉãÅ[É`ÉìÇ™ refCon Ç®ÇÊÇ—ÉfÅ[É^ÉoÉbÉtÉ@Ç // ÉvÉçÉZÉXÇÃÉOÉçÅ[ÉoÉãïœêîÇΔǵǃéQèΔÇ∑ÇÈDZÇΔÇâºíËǵǃǢÇÈÅB // CFM Ç≈ÇÕDZÇÍÇ™â¬î\ÅB Å@ return (OSErr) CallUniversalProc((UniversalProcPtr)NGetTrapAddress(0xA07C,0), kRegisterBased | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | REGISTER_RESULT_LOCATION(kRegisterD0) | REGISTER_ROUTINE_PARAMETER(1, kRegisterA0, SIZE_CODE(sizeof(&gADBOpBlock))) | REGISTER_ROUTINE_PARAMETER(2, kRegisterD0, SIZE_CODE(sizeof(commandNum))), &gADBOpBlock, commandNum); Å@ #else // TARGET_CPU_68K && TARGET_RT_MAC_CFM Å@ return (ADBOp(refCon, compRout, buffer, commandNum)); Å@ #endif // TARGET_CPU_68K && TARGET_RT_MAC_CFM Å@ } ----------- Rich Kubota Å@ Å@
[ Technical Q&A's : Hardware (for Mac OS) : HW30 ] |
|